結合 GitHub Actions
,透過自動化流程來進行版本號的自動遞增與發布以提升效率。在發 PR
時,結合 Version Tag
自動生成版本號內容。以下將實作結合 GitHub Actions
來自動發布版本號的流程:
使用 Semmantic Versioning 版本號命名原則,參考上篇。
需要在 GitHub 建立三個 YAML 檔文件。
.github/workflows/create-release.yml
:依據 SemVer 加入 Tag ,例如:v1.3.35
,push
後便會觸發此工作流程,此 .yml
檔名可以自己取名。
name: 'Create Release'
# 此 workflow 的名稱,功用:創 Release 版本。
on:
push:
branches:
- main
# on:workflow 觸發條件。
# push:當 code 被 push 到 main 分支時,會觸發此 workflow。
jobs:
release:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# 現有的 GitHub 官方 Action。將專案程式碼 Checkout,接著可進行測試,部署等。
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
# 建立 Node.js 環境,因為 semantic-release 通常依賴 Node.js。
- name: Install dependencies
run: npm install
# npm install 以執行 semantic-release。
- name: Run Semantic Release
uses: semantic-release/semantic-release@v19
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 使用 semantic-release 自動管理版本號和創 GitHub Release。
with:
plugins: |
[
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/github"
]
# @semantic-release/commit-analyzer:分析 commit message or PR 標題來決定版本號(major, minor, patch)。
# @semantic-release/release-notes-generator:生成 Release 說明,可以根據 PR 標題來分類。
# @semantic-release/changelog:更新 CHANGELOG.md 文件,並將每個 PR 歸類到相應的 Release 說明中。
# @semantic-release/github:自動在 GitHub 上創一個 Release。
PR 標題如何撰寫才能出現在 Release 自動生成文件
conventional commits 規範 PR 標題
fix: 修正了表單提交錯誤 (#123)
feat: 新增用戶通知功能 (#456)
關鍵字
• fix: 對應小的 Bug 修復(Patch)。
• feat: 新功能(Minor)。
• BREAKING CHANGE: 對應重大變更(Major)。
屬於 Bug 修復類型的 PR 會自動被標記為 fix,並在 Release 文件中生成「Bug Fixes」的標題。
新功能會被標記為 feat,並生成「Features 」標題。
可以修改 release-notes-generator ,進一步定義原則,讓它們對應 PR 上的標題。
透過 PR 標題或內容自動生成有規則的 Release 文件。